package Thread;

/*
 *
 * */
public class ThreadDemo1 {
    public static void main(String[] args) {
        //实例化两个线程
        Thread t1 = new MyThread1();
        Thread t2 = new MyThread2();
        //调用start()方法来启动线程.注意:启动线程不能直接调用类中重写的run方法
        /*
         * start方法时将此线程加入到 操作系统底层中的调度器当中
         * */
        t1.start();
        t2.start();
    }
}

/*
 * 继承了Thread类就可以被称为线程
 * 将线程中执行的代码放到run方法
 * */
class MyThread1 extends Thread {
    public void run() {
        for (int i = 0; i < 1000; i++) {
            System.out.println("你是谁呀");
        }
    }
}

/*
 * 继承了Thread类就可以被称为线程
 * 将线程中执行的代码放到run方法
 * */
class MyThread2 extends Thread {
    public void run() {
        for (int i = 0; i <= 1000; i++) {
            System.out.println("查水表的123132132132");
        }
    }
}

/*
 * 使用继承Thread类来实现多线程
 * 此种线程的创建方式的优点：结构简单，利于匿名内部类形式创建
 * 缺点：
 * 1.存在继承冲突问题
 *   java是单继承的，这意味着如果继承了Thread就无法在继承其他类了，这在实际开发中存在着诸多不便(实际上继承最主要的目的就是为了复用方法)
 * 2.继承Thread类的同事重写run方法，将线程任务定义在run方法中，这会导致线程与线程要执行的任务存在了必然的耦合关系，利于线程的重用
 * */
